package Leetcode.lc048;

/***
 * 给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
 *
 * 你必须在 原地 旋转图像，这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像
 */
public class Sloution {
    /***
     * 顺时针90，先转置，再翻转
     * @param matrix
     */
    public void rotate(int[][] matrix) {
        //分析结果，若有行列变化使用转置，只有行行或者列列变化，反转即可
        //1.先转置
        for(int i=0;i<matrix.length;i++){
            for(int j=0;j<i;j++){
                int temp=matrix[i][j];
                matrix[i][j]=matrix[j][i];
                matrix[j][i]=temp;
            }
        }
        //2.列反转
        for(int[] r:matrix){
            int left=0,right=r.length-1;
            while(left<right){
                int temp=r[left];
                r[left++]=r[right];
                r[right--]=temp;
            }
        }
    }

    public static void main(String[] args) {
        Sloution sloution = new Sloution();
        int[][] test={{1,2,3},
                      {4,5,6},
                      {7,8,9}};
        sloution.rotate(test);
        for(int[] a:test){
            System.out.print(a);
        }

    }

}
